<template>
	<view class="list">
		<view class="tabBox">
			<view v-for="(item,index) in tabList" 
			:key="index" 
			class="item"
			@tap="changTap(index)">   
				<!-- current就是tab对应的下标 如果等于index就加上红色 -->
				<view :class="{red:current == index}">
					{{ item.name }}
				</view>
				<!-- 判断箭头的显示 -->
				<view class="iconBox" v-if="index == 1 || index == 2">
					<uni-icons type="arrowup" size="10" 
					:color="item.currentStatus == 'up' ? 'red': ''"></uni-icons>
					
					<uni-icons type="arrowdown" size="10" 
					:color="item.currentStatus == 'down' ? 'red': ''"></uni-icons>
				</view>
			</view>
			
		</view>
		
		<view class="product-list">
			<navigator :url="`./info/info?id=${item.id}`" class="product-block" v-for="item in listRows " :key="item.id">
				<image class="img" :src="item.pic"></image>
				<view class="gname">{{item.name}}</view>
				<view class="text-area">
					<view class="gnma">{{item.price}}</view>
					<view class="gnmm">不凡</view>
				</view>
			</navigator>
		</view>
	
	</view>
</template>

<script>
	import { findProductList } from"../../../api/home/index.js"
	export default {
		data() {
			return {
				
				id:"",//上个页面点进来的
				tabList:[
					{
						name:"新品",
						currentStatus:"default", //default up down  来判断箭头的颜色
					},
					{
						name:"销量",
						currentStatus:"default",
					},
					{
						name:"价格",
						currentStatus:"default",
					},
					{
						name:"筛选",
						currentStatus:"default",
					},
					
				],
				current:0, //tab栏的颜色判断通过下标
				listRows:[], //渲染出来的数据
				isDesc:0, //升序降序
				sortBy:"",   //:price(价格),sale(销量),sort(排序) 根据名称进行判断
				start:1,   //页数
				total:0, //数据总数 用来做上拉加载下一页数据的条件
			};
		},
		created( option ) {
			
		},
		onLoad(parameter) {
			console.log("我是获取到的id",parameter);
			this.id=parameter.id;
			//调取findProductList方法
			this.init();
		},
		// 下拉刷新 然后在获取结果后再停止刷新
		onPullDownRefresh(){
			// console.log("下拉加载");
			// 还要重置分页数据
			this.start = 1;
			//还需要重置新数据
			this.listRows=[];
			// 下拉时在发送请求
			this.init();
		},
		// 上拉加载常用于拉下一页数据
		onReachBottom(){
			// console.log("页面上拉了");
			this.start++;
			// 如果请求到最后一页就不让在发送请求 判断条件是数据的总数total   当数据总数大于获取数据的长度时候就执行.当数据长度等于大于总数total就不执行
			if(this.total > this.listRows.length){
			this.init() //同时在获取最新的数据 注意不可以直接赋值了要push
			}
			

		},
		methods:{
			init(){
				findProductList(this.start,5,{
			  "categoryId": this.id,
			  "isDesc":this.isDesc,
			  "sortBy": this.sortBy,
				})
				.then(res=>{
					console.log(res)
					this.listRows.push(...res.data.rows) //根据id获取到的数据
					this.total = res.data.total;  //获取总数
					uni.stopPullDownRefresh()  //获取到数据停止刷新
				})
			},
			// 点击实现tab栏的颜色改变把下标传递过来在赋值给data里的current
			changTap(idx){
				// 记得重置数据 因为tthis.listRows.push(...res.data.rows) //根据id获取到的数据
				this.listRows=[];
				//重置分页查询
				this.start =1,
				this.current = idx;
				//点击tab其他状态为初始状态    循环遍历在判断 当点击传入的下标不等于循环遍历的时候就把constructor变为default
				this.tabList.forEach((ele,index)=>{
					if(index != idx){
						ele.currentStatus = "default"
					}
				});
				// 判断点击的是price(价格),sale(销量),sort(排序)
				if(this.tabList[idx].name=="销量"){
					this.sortBy="sale"
				}else if(this.tabList[idx].name=="价格"){
					this.sortBy="price"
				}
				// 判断状态点击变红 获取每个下标的currentStatus
				if(this.tabList[idx].currentStatus == "default"){
					this.tabList[idx].currentStatus = "up"
					// 箭头向上时候
					this.isDesc = 1;
				}else if(this.tabList[idx].currentStatus == "up"){
					this.tabList[idx].currentStatus = "down"
					// 箭头向下时默认是0
					this.isDesc = 0;	
				}else{
					this.tabList[idx].currentStatus = "up"
					// 箭头向上时候
					this.isDesc = 1;
				}
				//点击后再次获取新数据就是更改过的数据
				this.init()
			}
		}
	}
</script>

<style lang="scss" scoped>
.list{
	background-color: #F1ECE7;
	.tabBox{
		display: flex;
		align-items: center;
		justify-content: space-around;
		background-color: #435950;
		padding: 20rpx;
		color: #FFFFFF; 
		width: 100%;
	    position: fixed;
		// margin-bottom: 40rpx;
		z-index: 999;
		
		
		
		.item{
			display: flex;
			align-items: center;
			.iconBox{
				margin-left: 16rpx;
				display: flex;
				align-items: center;
				flex-direction: column;
			}
			.red{
				color: red;
			}
		}
	}
	.product-list{
	    padding-top: 50px;
		display: flex;
		flex-wrap: wrap;
		// justify-content: space-between;
		.product-block{
			margin-top: 40rpx;
			margin-left: 40rpx;
			// padding-left: 20rpx;
			background-color: #FFFFFF;
			width: 316rpx;
			.img{
				width:100%;
				height: 238rpx;
			}
			.gname{
				color:#3e3e3e;
				font-weight: 700;
				margin-top: 6rpx;
			}
			.text-area{
				display: flex;
				justify-content: space-between;
				 align-items: center;
				 padding: 10rpx;
				.gnma{
					
				}
				.gnmm{
					
				}
			}
		}
	}
}

</style>
